
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2008, Adam Kubach
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//
///////////////////////////////////////////////////////////////////////////////

#include "Minerva/Plugins/GeoNames/City.h"

#include "Usul/Convert/Convert.h"

#include "XmlTree/Node.h"

using namespace Minerva::Layers::GeoNames;


///////////////////////////////////////////////////////////////////////////////
//
//  Constructor.
//
///////////////////////////////////////////////////////////////////////////////

City::City ( const XmlTree::Node& node ) : 
  _location ( 0.0, 0.0 ),
  _name()
{
  XmlTree::Node::RefPtr lat ( node.child ( "lat" ) );
  XmlTree::Node::RefPtr lng ( node.child ( "lng" ) );

  if ( lat.valid() )
    _location[1] = Usul::Convert::Type<std::string,double>::convert ( lat->value() );

  if ( lng.valid() )
    _location[0] = Usul::Convert::Type<std::string,double>::convert ( lng->value() );

  XmlTree::Node::RefPtr name ( node.child ( "name" ) );

  if ( name.valid() )
    _name = name->value();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Destructor.
//
///////////////////////////////////////////////////////////////////////////////

City::~City()
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the location.
//
///////////////////////////////////////////////////////////////////////////////

Usul::Math::Vec2d City::location() const
{
  return _location;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Get the name.
//
///////////////////////////////////////////////////////////////////////////////

std::string City::name() const
{
  return _name;
}
